<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Memory and Peripheral Resources</title>
<title>CMSIS-Zone: Memory and Peripheral Resources</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<script type="text/javascript" src="cmsis_footer.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-Zone
   &#160;<span id="projectnumber">Version 1.2.0-alpha</span>
   </div>
   <div id="projectbrief">System Resource Management</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('zTUIMemPerRes.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Memory and Peripheral Resources </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The available memory can be further divided into <a class="el" href="zTUIMemPerRes.html#zTUIMemAdd">smaller regions</a> that are later assigned to zones, for example a zone for loader and zone for application.</p>
<p>For memory and peripherals <a class="el" href="zTUIMemPerRes.html#zTUIPerProp">properties</a> such as access permission, privilege, and security level can be configured. These settings can be for example used to generate source code files that configure the device at run-time.</p>
<h1><a class="anchor" id="zTUIMemView"></a>
View memory and peripheral resources</h1>
<p>Initially, this uses the information in the *.rzone file which defines the generic access permissions for memory and peripherals. The CMSIS-Zone Editor shows the <b>Resource</b> <b>Map</b> of the given device:</p>
<div class="image">
<img src="lpc55_resource_map.png" alt="lpc55_resource_map.png"/>
</div>
<p>Here, you can see all resources that are available on the device.You see <b>Memory</b>, <b>Peripherals</b>, <b>Cores</b>, and <b>Info</b> related to the resources. <a class="el" href="zTUI.html#zTGUIZoneEditor">Colored resources</a> are assigned to a zone.</p>
<h1><a class="anchor" id="zTUIMemAdd"></a>
Create Memory Regions</h1>
<p>To create a new memory region, right-click on the memory that you want to divide and select <b>Add memory region</b>:</p>
<div class="image">
<img src="AddMemoryBlock.png" alt="AddMemoryBlock.png"/>
</div>
<p>In the dialog a name derived from the parent memory region is provided. Change this region name as needed and specify the size. In this dialog, you change permissions, privilege, or security level for the memory region. When done, click <b>Finish:</b> </p>
<div class="image">
<img src="NewMemoryBlockWiz.png" alt="NewMemoryBlockWiz.png"/>
</div>
<p>The new memory region is immediately shown in the zone map. Depending on the security level, you may be able to assign this new region only to certain zones. For example, secure memory regions cannot be assigned to a non-secure zone.</p>
<div class="image">
<img src="IRAM1_1Display.png" alt="IRAM1_1Display.png"/>
</div>
<p>The information about the memory regions is stored in the <a class="el" href="xml_partition.html#xml_amemory">/azone/partition/memory element</a> element of the *.azone file.</p>
<h1><a class="anchor" id="zTUIMemDel"></a>
Delete Memory Regions</h1>
<p>To delete a memory region, right-click on the memory region select <b>Delete memory region</b>:</p>
<div class="image">
<img src="DelMemoryRegion.png" alt="DelMemoryRegion.png"/>
</div>
<h1><a class="anchor" id="zTUIPerProp"></a>
Resource Properties</h1>
<p>To change the properties of a resource, such as a peripheral for example, right-click the resource and select <b>Properties:</b> </p>
<div class="image">
<img src="res_prop.png" alt="res_prop.png"/>
</div>
<p>Then, you can set these properties:</p>
<div class="image">
<img src="peripheral_properties.png" alt="peripheral_properties.png"/>
</div>
<p><b>General</b> </p>
<ul>
<li><code>Shared:</code> the resource can be accessed by more than one zone</li>
<li><code>Startup:</code> locate the vector table to this region</li>
<li><code>No</code> zero init: preserve RAM content at startup</li>
<li><code>DMA:</code> enable direct memory access</li>
</ul>
<p><b>Permissions</b> </p>
<ul>
<li><code>peripheral:</code> mark this as a peripheral</li>
<li><code>read</code> </li>
<li><code>write</code> </li>
<li><code>execute</code> </li>
</ul>
<p><b>Privilege</b> </p>
<ul>
<li><code>not</code> specified</li>
<li><code>privileged</code> </li>
<li><code>unprivileged</code> </li>
</ul>
<p><b>Security</b> </p>
<ul>
<li><code>not</code> specified</li>
<li><code>non-secure</code> </li>
<li><code>non-secure</code> callable</li>
<li><code>secure</code> </li>
</ul>
<p>The information about the peripherals is stored in the <a class="el" href="xml_partition.html#xml_aperipheral">/azone/partition/peripheral element</a> element of the *.azone file.</p>
<h1><a class="anchor" id="zTUIPerSlotConf"></a>
Configure peripheral slot access rights</h1>
<p>Peripherals can have so called slots that can be configured separately. Depending on the peripheral, the slots have different names in the Zone Editor. For example, for DMA they are called <b>Channels:</b> </p>
<div class="image">
<img src="dma_channel_config.png" alt="dma_channel_config.png"/>
</div>
<p>For GPIOs, they are called <b>Pins:</b> </p>
<div class="image">
<img src="gpio_pins_config.png" alt="gpio_pins_config.png"/>
</div>
<p>In the dialog, you can set security and privilege levels:</p>
<div class="image">
<img src="dma_gpio_config.png" alt="dma_gpio_config.png"/>
</div>
<p>The information about the slots is stored in the <a class="el" href="xml_partition.html#xml_aslot">/azone/partition/peripheral/slot element</a> element of the *.azone file. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="zoneToolUsage.html">CMSIS-Zone Utility</a></li><li class="navelem"><a class="el" href="zTInteractiveMode.html">Interactive Mode</a></li>
    <li class="footer">
      <script type="text/javascript">
        <!--
        writeFooter.call(this);
        //-->
      </script>    
    </li>
  </ul>
</div>
</body>
</html>
